﻿//【初阶】19.list(2)

//【头文件包含】
//C++的主要头文件
#include<iostream>//c++的输入输出流
using std::cout, std::endl, std::cin;

#include<stack>
#include<queue>
using std::stack;
using std::queue;
#include"list.h"
//C的主要头文件
//#include<stdio.h>
//#include<stdlib.h>
//#include<assert.h>
//#include<string.h> 
#include<vector>;
using std::vector;




//【命名空间】

//【结构体声明】【类声明】



//【函数声明】
void Test1();void Test2();void Test3(); 

//【主函数】
int main()
{
	
	Test1();
	Test2();
	Test3();
    
	cout << "****主函数结束****" << endl;
	return 0;
}
/*测试用例*/void Test1()
{
	cout << "****测试用例开始****"<< endl;
	
	myspace::test_list1();
	myspace::test_list2();

	cout << "****测试用例结束****" << endl << endl;
}
/*测试用例*/void Test2()
{
	cout << "****测试用例开始****" << endl;
	cout << "stack-LIFO" << endl;
	stack<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);
	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;
	cout << "****测试用例结束****" << endl<<endl;
}

/*测试用例*/void Test3()
{
	cout << "****测试用例开始****" << endl;
	cout << "queue-FIFO" << endl;
	queue<int> q;
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	q.push(5);
	while (!q.empty())
	{
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl;
	cout << "****测试用例结束****" << endl << endl;
}



//【笔记】
//【初阶】19.list(2)
	//重载“->”符号可以实现节点为自定义类型的list 访问自定义类型节点对象的成员函数
	//同时在使用时一个->符号可以直接指向该节点对象内部的成员函数如 “datelist1->_day”
	//本质上->的位置实际是两层结构即datelist->data(date对象)->_day,但是编译器为了提高代码可读性将另一个->隐含了
	//Node* cur 和iterator it虽然可以同时指向同一个位置，且两者物理上是完全相同的，但是他们类型不一样意义也不一样 
	//*cur是一个指针的解引用，取到的是值的节点 而*it 是去嗲用迭代器的operator*返回的值节点中的值类型决定了对空间的解释权
//stack开头 







